package com.example.springboot.controller.netty;

import io.netty.util.HashedWheelTimer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

/**
 * @Author:ChenZhangKun
 * @Date: 2022/9/3 15:33
 */
@RestController
public class WheelTimerController {

    @Autowired
    private HashedWheelTimer wheelTimer;

    @GetMapping("/order")
    public String order() {
        System.out.println("开始下单");
        // 注册时间轮检查是否支付
        // 下单的时候，向时间轮中添加一个1分钟的延时任务
        wheelTimer.newTimeout(task -> {
            // 注意这里使用异步任务线程池或者开启线程进行订单取消任务的处理
            checkOrder();
        }, 1, TimeUnit.MINUTES);
        return "下单成功";
    }

    @Async
    public void checkOrder() {
        System.out.println("检查");
    }
}
